package com.yzh.springboot_rbac.controller;

import com.yzh.springboot_rbac.entity.Dept;
import com.yzh.springboot_rbac.entity.User;
import com.yzh.springboot_rbac.service.UserService;
import com.yzh.springboot_rbac.utils.AjaxResult;
import com.yzh.springboot_rbac.utils.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 用户管理功能模块
 */
@RestController
@RequestMapping("/user")
public class UserController extends BaseController {
    /*此控制器对用户管理进行操作*/
    @Autowired
    private UserService userService;

    /**
     * 部门树形结构的展示
     * 要求：只将部门树形结构展示出来，不用展示部门其他信息
     */

    /*1.点击用户管理，展示所有数据
    *   -部门结构树形展示，对应部门对应用户*/
    /**
     * 1.查询所有用户信息
     */
    @PostMapping("/selectAllUser")
    public List<User> selectAllUser() {
        return userService.selectAllUser();
    }

    /**
     * 2.查询对应部门对应的用户信息
     */
    @PostMapping("/selectUserBydeptName")
    public List<User> selectUserBydeptName(@RequestBody Dept dept) {
        return userService.selectUserBydeptName(dept);
    }

    /**
     * 3.查询用户信息根据条件
     * 条件（用户户名，手机号，用户状态，创建时间),还是封装成json对象
     * */
    @PostMapping("/selectUserByCondition")
    public AjaxResult selectUserByCondition(@RequestBody User user) {
        return success(userService.selectUserByCondition(user));
    }

    /**
     * 4.保存用户信息
     * 保存是一个方法，调用添加和修改的service方法。
     */
    @PostMapping("/save")
    public AjaxResult saveUser(@RequestBody User user, @RequestParam Integer postId, @RequestParam Integer roleId) throws Exception {
        if (user.getUserId() == null) {
            Boolean flag1 = userService.isAddUser(user, postId, roleId);
            if (flag1) {
                return success(user);
            } else {
                return error();
            }
        } else {
            Boolean flag2 = userService.isUpdateUser(user, postId, roleId);
            if (flag2) {
                return success(user);
            } else {
                return error();
            }
        }
    }

    /**
     * 5.添加用户信息
     * 单独测试添加用户信息
     */
    @PostMapping("/addUser")
    public AjaxResult addUser(@RequestBody User user, @RequestParam Integer postId, @RequestParam Integer roleId) throws Exception {
        Boolean flag = userService.isAddUser(user, postId, roleId);
        if (flag) {
            return success(user);
        } else {
            return error();
        }
    }

    /**
     * 6.修改用户
     * 单独测试修改用户信息
     */
    @PostMapping("/updateUser")
    public AjaxResult updateUser(@RequestBody User user, @RequestParam Integer postId, @RequestParam Integer roleId) throws Exception {
        Boolean flag = userService.isUpdateUser(user, postId, roleId);
        if (flag) {
            return success(user);
        } else {
            return error();
        }
    }

    /**
     * 7.删除用户
     * 条件：用户岗位关系表和用户角色关系表也要删除
     */
    @PostMapping("/deleteUser")
    public AjaxResult deleteUser(@RequestBody User user) {
        Boolean flag = userService.deleteUser(user);
        if (flag) {
            return success();
        } else {
            return error();
        }
    }
}
